package com.gpframework.module.module.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gpframework.common.core.domain.entity.SysUser;
import com.gpframework.module.common.domain.vo.CommonResourceVo;
import com.gpframework.module.module.domain.BrandInfo;
import com.gpframework.module.module.domain.req.BrandInfoUpdate;
import com.gpframework.module.module.domain.req.BrandStoreReq;
import com.gpframework.module.module.domain.vo.BrandInfoVo;
import com.gpframework.module.module.domain.vo.UserStoreVo;

import java.util.List;

/**
 * @ClassName BrandInfo
 * @Author gpframework
 * @Date 2022-03-23
 * @Version 1.0.0
 * @Description 品牌信息Service接口
 */
public interface IBrandInfoService extends IService<BrandInfo> {

    /**
     * 获取品牌LOGO
     *
     * @param brandId 品牌id
     * @return
     */
    CommonResourceVo getBrandLogo(Long brandId);

    /**
     * @Description 查询列表返回VO 用于返回给前端的列表接口
     * @Author gpframework
     * @Date 2022-03-23
     * @Param [lqw]
     * @Return List<BrandInfoVo>
     */
    List<BrandInfoVo> listVo(QueryWrapper<BrandInfo> lqw);

    /**
     * @Description 通过查询详情VO 用于返回给前端的列详情接口
     * @Author gpframework
     * @Date 2022-03-23
     * @Param [id]
     * @Return BrandInfoVo
     */
    BrandInfoVo getVoById(Long id);

    /**
     * 注册品牌
     *
     * @param brandInfo
     * @return
     */
    boolean registered(BrandInfo brandInfo);

    /**
     * 生成品牌编号
     *
     * @return
     */
    String getBrandNo();

    /**
     * 根据手机号码查询品牌信息
     *
     * @param mobile
     * @return
     */
    BrandInfoVo findByMobile(String mobile);

    /**
     * 运营添加品牌
     *
     * @param brandInfo
     * @return
     */
    Boolean add(BrandInfo brandInfo);

    /**
     * 修改品牌信息
     *
     * @param brandInfoUpdate
     * @return
     */
    boolean edit(BrandInfoUpdate brandInfoUpdate);

    boolean updateLogoAndSeal(BrandInfo brandInfo);

    /**
     * 获取用户品牌账号列表
     *
     * @param brandStoreReq
     * @return
     */
    List<UserStoreVo> getUserBrandList(BrandStoreReq brandStoreReq);

    /**
     * 获取品牌信息（缓存）
     *
     * @param brandId
     * @return
     */
    BrandInfoVo getBrandInfo(Long brandId);

    /**
     * 修改品牌信息（缓存）
     *
     * @param brandId
     * @return
     */
    int updateBrandInfoById(BrandInfo brandId);

    /**
     * 设置品牌用户登录状态
     *
     * @param sysUser
     * @return
     */
    boolean updateBrandLoginStatus(SysUser sysUser);

    /**
     * 设置门店用户登录状态
     *
     * @param sysUser
     * @return
     */
    boolean updateStoreLoginStatus(SysUser sysUser);

}
